class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * 
     * @param str string字符串 
     * @return string字符串vector
     */
    bool st[15] = {false};
    string ans;
    set<string> ret;
    int n;

    void dfs(string str)
    {
        if(ans.size() == n)
        {
            ret.insert(ans);
            return;
        }
        for(int i = 0;i < n;i++)
        {
            if(st[i])
            {
                continue;
            }
            ans.push_back(str[i]);
            st[i] = true;
            dfs(str);
            st[i] = false;
            ans.pop_back();
        }
    }

    vector<string> Permutation(string str) {
        // write code here
        n = str.size();
        for(int i = 0;i < n;i++)
        {
            ans.push_back(str[i]);
            st[i] = true;
            dfs(str);
            st[i] = false;
            ans.pop_back();
        }
        return {ret.begin(),ret.end()};
    }
};